1. Field of the Description
The present description relates, in general, to legged robots (e.g., biped humanoid robots or other legged robots such as quadrupeds) that may be implemented as floating-base humanoid robots (e.g., with no link or attachment to a support) and to control of force-controlled joints of such robots. More particularly, the present description relates to methods for controlling floating-base humanoid robots using strict contact force constraints (and to robots operating with a controller implementing such control methods).
2. Relevant Background
A biped humanoid robot is a robot with an appearance based on that of the human body. Humanoid robots have been designed for providing interaction with various environments such as tools and machines that were made for humans and often are adapted for safely and effectively interacting with human beings. In general, humanoid robots have a torso with a head, two arms, and two legs each with some form of foot such that the robot can walk on planar surfaces, climb steps, and so on (e.g., these humanoid robots are “bipeds” as are humans). Humanoid robots may be formed with many rigid links that are interconnected by joints that are operated or positioned by applying a force or torque to each joint to move and position a robot. Similarly, other legged robots such as those with three, four, or more legs also may walk utilizing force-controlled movement of their legs.
In order to interact with human environments, humanoid robots require safe and compliant control of the force-controlled joints. In this regard, a controller is provided for each robot that has to be programmed to determine desired motions and output forces (contact forces) and, in response, to output joint torques to effectively control movement and positioning of the humanoid robot. However, it has often proven difficult to achieve desired results with force-controlled robots because while performing a task in a complex environment the robot may encounter uneven ground or even steps, static and dynamic obstacles, and even humans. The robot has to continue to be balanced as it stands in one location and also as it steps and moves within the environment.
A number of useful techniques have been developed for controlling humanoid robots including use of virtual model control (VMC), use of dynamic balance force control (DBFC), or the like to achieve contact force control. Regardless of the specific control techniques implemented by the robot controller, particular data that may be provided by sensors or be calculated has to be accurate for adequate control to be achieved. For example, compared with traditional manipulators, it has proven to be an ongoing challenge to identify or determine kinematic and dynamic parameters of floating-base humanoid robots. The difficulty exists in part because it is problematic to obtain a wide variety of poses and motions while maintaining balance. In addition, parameter identification or determination algorithms often have required external measurement, and this forces robotic control systems to include additional sensors in the environment (i.e., outside or external to the robot itself).
As one particular example with regard to kinematic parameters, a robot may include a sensor at each joint that is used to provide input to the controller for identifying or determining joint angles, and these joint angles are kinematic parameters used to further control and/or position the robot through movement of its joints. In practice, the joint sensors may move or rotate from their original positions due to movement of the joints and applied forces. As a result, some of the sensors are providing data that indicates a measured joint angle that varies from the actual joint angle for the robot, and, without correction, the robot will be improperly controlled or positioned, which can result in failure to complete a task and even loss of balance.
Calibration can be used to address these problems with the identification of kinematic and dynamic parameters used in robot control, but many existing calibration methods are difficult to implement and/or do not wholly resolve these control problems. Most kinematic calibration methods, such as those used to correct for inaccurate joint sensors, use external position measurements of some feature points on the robot. This may include providing markers on the robot and using external motion sensors to pick up the marker positions to determine global measurements and local measurement from the joint sensors. Offsets are calculated for each sensor to allow the controller to more accurately determine true joint angles. As can be seen, this requires use of additional external devices (motion sensors) and measurements, and the kinematic calibration is time consuming and tedious especially since it may have to be periodically repeated to account for further movement of the sensors.
Similarly, dynamic calibration may be desirable to more accurately identify inertial parameters such as mass and moment of inertia of each link for the controller. Existing dynamic calibration methods are often ineffective as it is difficult to move the robot in many different ways and into positions while retaining proper balance. As a result, the input data is often limited, and the limited data collection process makes calculation of inertial parameters a challenge. An exemplary dynamic calibration method involves use of the pseudo-inverse of a coefficient matrix. However, it has proven difficult to get a well-conditioned coefficient matrix such that this calibration method results in physically inconsistent parameters such as a negative mass when the calibration data is not adequately diverse.
Hence, there remains a need for improved methods for calibrating humanoid robots. Preferably, the methods would provide kinematic calibration without the need for external measurements and would provide dynamic calibration with physically consistent inertial parameters.